﻿/*
 * mopTip 2.2
 * By Hiroki Miura (http://www.mopstudio.jp)
 * Copyright (c) 2008 mopStudio
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
 * July 18, 2009
*/

var mopTipCount = 0;
var startOpenMopTip = false;
var mopTipWindW, mopTipWindH, mopTipStyle;
var mopTipOpened = false;
var mopTipW, mopTipH;
var mopTipFunc, mopTipPin = false, mopTipContent;
var mopTipScrollX, mopTipScrollY, mopTipMouseX, mopTipMouseY;
var mopTipxOffset, mopTipyOffset;
var mopTipUa = navigator.userAgent, mopTipBrowser, mopTipIe = false;
var mopTipLeft, mopTipTop;
var mopTipHover = false;
var mopTipYoff;
var mopTipNoHeight = false;
var overClickCheck = false;
var closeBtnClick = false;
var mopTipCloseBtn = new Image();
var mopTipCloseBtnH = new Image();
var mopTipArrowBottom = new Image();
var mopTipArrowTop = new Image();
var mopTipBottom = new Image();
var mopTipLeft = new Image();
var mopTipLeftBottom = new Image();
var mopTipLeftTop = new Image();
var mopTipRight = new Image();
var mopTipRightBottom = new Image();
var mopTipRightTop = new Image();
var mopTipTop = new Image();

mopTipCloseBtn.src = "mopTip/closeBtn.png"
mopTipCloseBtnH.src = "mopTip/closeBtn_h.png"
mopTipArrowBottom.src = "mopTip/arrowBottom.png"
mopTipArrowTop.src = "mopTip/arrowTop.png"
mopTipBottom.src = "mopTip/bottom.png"
mopTipLeft.src = "mopTip/left.png"
mopTipLeftBottom.src = "mopTip/leftBottom.png"
mopTipLeftTop.src = "mopTip/leftTop.png"
mopTipRight.src = "mopTip/right.png"
mopTipRightBottom.src = "mopTip/rightBottom.png"
mopTipRightTop.src = "mopTip/rightTop.png"
mopTipTop.src = "mopTip/top.png"
/*line of changing shape from page bottom*/
var mopTipChangeY = 200;
var back = {
    para: "",
    callback: function (id) { return false; }
}
jQuery.fn.extend({
    mopTip: function (setting) {
        $("#mopTip01").hide();
        $("#mopTip01 .close").hide();
        mopTipH = null;
        if ($(this).attr("href") == "#") {
            $(this).attr({ href: "#?moptip" });
        };
        $(this).css({ cursor: "pointer" });
        $(this).mouseover(function (evt) {
            if (mopTipStyle == "overOut") {
                mopTipFunc.tipClose();
            }
        	$("#mopTip01 .close").hide(); 
        	$("#mopTip01 .content").html("");
        	if(mopTipCount==0){
        		mopTipFunc.tipInit();
        		mopTipCount+=1;
        	};
        	if(mopTipUa.indexOf("MSIE")>-1){
        			mopTipIe=true;
        	};
        	mopTipW=setting.w;
        	mopTipH=setting.h;
        	mopTipStyle=setting.style;
        	mopTipContent=$(setting.get).html();
        	mopTipYoff=setting.yOff;

        	if(mopTipH==null){
        		mopTipNoHeight=true;
        		if(mopTipYoff==null){
        			mopTipYoff=-150;
        		}
        	}else{
        		mopTipNoHeight=false;
        	}
        	$("#mopTip01 .tip").css({width:mopTipW+"px"});
        	if(mopTipH!=null){
        		$("#mopTip01 .tip").css({height:mopTipH+"px"});
        	}else{
        		mopTipH==null
        		$("#mopTip01 .tip").css({height:"0px"});
        	}
        	$("#mopTip01 .content").html(mopTipContent);
        	mopTipFunc.findPosi(evt);
        	$("#mopTip01 table").hover(
        		function(){mopTipHover==true;},
        		function(){mopTipHover==false;}
        	);
        });
       
        $(this).mouseout(function () {
            if (mopTipStyle == "overOut") {
                mopTipFunc.tipClose();
            }
            startOpenMopTip = false;
            mopTipStyle = false;
            mopTipPin = false;
        });
        $(this).click(function () {
            if (mopTipOpened == true) {
                mopTipPin = true;
            }
        });
        $(this).mousemove(function (evt) {
            $(".dForIe").hide();
            $(".dForIe").html(mopTipMouseX + mopTipxOffset);
            if ((mopTipStyle != false) && (mopTipPin == false)) {
                //mopTipFunc.findPosi(evt);
            }
        });
        mopTipFunc = {
            tipInit: function () {
                $("body").append(
					'<div class="dForIe"></div>' +
					'<div id="mopTip01">' +
					  '<table border="0" cellspacing="0" cellpadding="0">' +
						'<tr>' +
						  '<td class="leftTop">&nbsp;</td>' +
						  '<td><table class="arrowSet" border="0" cellspacing="0" cellpadding="0">' +
							'<tr>' +
							  '<td class="arrow">&nbsp;</td>' +
							  '<td class="top">&nbsp;</td>' +
							'</tr>' +
						  '</table></td>' +
						  '<td class="rightTop"> </td>' +
						'</tr>' +
						'<tr>' +
						  '<td class="left">&nbsp;</td>' +
						  '<td class="tip"><div class="content"></div></td>' +
						  '<td class="right">&nbsp;</td>' +
						'</tr>' +
						'<tr>' +
						  '<td class="leftBottom">&nbsp;</td>' +
						  '<td><table class="arrowSetBottom" border="0" cellspacing="0" cellpadding="0">' +
							'<tr>' +
							  '<td class="arrowBottom">&nbsp;</td>' +
							  '<td class="bottom">&nbsp;</td>' +
							'</tr>' +
						  '</table></td>' +
						  '<td class="rightBottom"></td>' +
						'</tr>' +
					  '</table>' +
					  '<div class="close">&nbsp;</div>' +
					'</div>'
				);
                /*close button click*/
                $("#mopTip01 .close").click(function () {
                    closeBtnClick = true;
                    mopTipFunc.tipClose();
                });
            },
            findPosi: function (evt) {
                /*position*/
                if (mopTipIe == true) {
                    mopTipScrollX = document.documentElement.scrollLeft;
                    mopTipScrollY = document.documentElement.scrollTop;
                    mopTipMouseX = window.event.clientX + mopTipScrollX;
                    mopTipMouseY = window.event.clientY + mopTipScrollY;
                } else {
                    mopTipScrollX = window.pageXOffset;
                    mopTipScrollY = window.pageYOffset;
                    mopTipMouseX = evt.pageX;
                    mopTipMouseY = evt.pageY;
                }
                mopTipWindW = document.documentElement.clientWidth;
                mopTipWindH = document.documentElement.clientHeight;
                var windXsc = mopTipWindW + mopTipScrollX;
                var windYsc = mopTipWindH + mopTipScrollY;
                var checkX = windXsc - mopTipMouseX;
                var checkY = windYsc - mopTipMouseY;

                var mopTipCheckHeight = mopTipChangeY;
                var preCheckHeight = mopTipH + 40 + 40;


                if (mopTipNoHeight == false) {
                    if (mopTipCheckHeight < preCheckHeight) {
                        mopTipCheckHeight = preCheckHeight;
                    }
                } else {
                    mopTipCheckHeight = mopTipChangeY;
                }
                mopTipLeft = mopTipMouseX + mopTipxOffset;
                mopTipTop = mopTipMouseY + mopTipyOffset;

                if ((checkX > mopTipW) && (checkY > mopTipCheckHeight)) {
                    /*shape left top*/
                    mopTipxOffset = -50;
                    mopTipyOffset = 30;
                    $("#mopTip01 .arrowSet tr").html('<td class="arrow">&nbsp;</td><td class="top">&nbsp;</td>');
                    $("#mopTip01 .top").css({ width: mopTipW - 60 + "px", height: "20px" });
                    $("#mopTip01 .arrowSet").css({ width: mopTipW + "px" });
                    $("#mopTip01 .arrowSetBottom tr").html('<td class="bottom">&nbsp;</td>');
                    $("#mopTip01 .bottom").css({ width: mopTipW + "px", height: "20px" });
                } else if ((checkX <= mopTipW) && (checkY > mopTipCheckHeight)) {
                    /*shape right top*/
                    mopTipxOffset = -mopTipW - 10;
                    mopTipyOffset = 30;
                    $("#mopTip01 .arrowSet tr").html('<td class="top">&nbsp;</td><td class="arrow">&nbsp;</td>');
                    $("#mopTip01 .top").css({ width: mopTipW - 60 + "px", height: "20px" });
                    $("#mopTip01 .arrowSet").css({ width: mopTipW + "px" });
                    $("#mopTip01 .arrowSetBottom tr").html('<td class="bottom">&nbsp;</td>');
                    $("#mopTip01 .bottom").css({ width: mopTipW + "px", height: "20px" });
                } else if ((checkX > mopTipW) && (checkY <= mopTipCheckHeight)) {
                    /*shape left bottom*/
                    mopTipxOffset = -50;
                    mopTipyOffset = 30;
                    $("#mopTip01 .arrowSet tr").html('<td class="arrow">&nbsp;</td><td class="top">&nbsp;</td>');
                    $("#mopTip01 .top").css({ width: mopTipW - 60 + "px", height: "20px" });
                    $("#mopTip01 .arrowSet").css({ width: mopTipW + "px" });
                    $("#mopTip01 .arrowSetBottom tr").html('<td class="bottom">&nbsp;</td>');
                    $("#mopTip01 .bottom").css({ width: mopTipW + "px", height: "20px" });
                } else if ((checkX <= mopTipW) && (checkY <= mopTipCheckHeight)) {
                    /*shape right bottom*/
                    mopTipxOffset = -mopTipW - 10;
                    mopTipyOffset = 30;
                    $("#mopTip01 .arrowSet tr").html('<td class="top">&nbsp;</td><td class="arrow">&nbsp;</td>');
                    $("#mopTip01 .top").css({ width: mopTipW - 60 + "px", height: "20px" });
                    $("#mopTip01 .arrowSet").css({ width: mopTipW + "px" });
                    $("#mopTip01 .arrowSetBottom tr").html('<td class="bottom">&nbsp;</td>');
                    $("#mopTip01 .bottom").css({ width: mopTipW + "px", height: "20px" });
                }
                /*pngFix*/
                $("#mopTip01").pngFix();
                mopTipFunc.setPosi();
            },
            setPosi: function () {
                $("#mopTip01").css({
                    position: "absolute",
                    width: mopTipW + 40 + "px",
                    left: mopTipMouseX + mopTipxOffset + 10 + "px",
                    top: mopTipMouseY + mopTipyOffset - 25 + "px"
                });
                mopTipFunc.openTimeout();
            },
            openTimeout: function () {
                startOpenMopTip = true;
                if (mopTipStyle != "overOut") {
                    $("#mopTip01 .close").show();
                }
                setTimeout("mopTipFunc.tipOpen()", 500);
            },
            tipOpen: function () {
                if (startOpenMopTip == true) {
                    /*put content*/
                    $("#mopTip01").show();
                    mopTipOpened = true;
                    closeBtnClick = false;
                }
            },
            tipClose: function () {
                startOpenMopTip = false;
                mopTipOpened = false;
                mopTipH = null;
                setTimeout("mopTipFunc.tipClosing()", 150);
            },
            tipClosing: function () {
                $("#mopTip01 table").focus();
                $("#mopTip01 .close").hide();
                $("#mopTip01").hide();
            }
        }
    }
});
